import os
from dotenv import load_dotenv

import streamlit as st

from langchain_community.llms import Tongyi
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain_community.chat_models.tongyi import ChatTongyi

# 加载 .env 文件
load_dotenv()  # 默认会加载位于项目根目录的 .env 文件



# 设置应用标题
st.title('文章生成器')

# 创建文本输入框，用于输入感兴趣的主题
topic = st.text_input('输入感兴趣的主题')

# 创建标题生成的 PromptTemplate
title_template = PromptTemplate(
    input_variables=['topic'],
    template='根据主题"{topic}"生成一个有吸引力的标题'
)

# 创建文章生成的 PromptTemplate
article_template = PromptTemplate(
    input_variables=['title'],
    template='根据标题"{title}"生成一篇文章，字数200字左右'
)

# 实例化 OpenAI 模型


# 创建语言模型对象

llm = Tongyi(
    model='qwen-plus',  # 替换为您使用的 Tongyi 模型名称
    top_p=0.9,
    temperature=0.9,
    api_key=os.getenv("DASHSCOPE_API_KEY")
)

# 初始化聊天模型
chat_model = ChatTongyi(
    model='qwen-plus',
    temperature=0,
    api_key=os.getenv("DASHSCOPE_API_KEY")
)
# 创建标题生成链
title_chain = LLMChain(
    llm=llm,
    prompt=title_template,
    verbose=True
)

# 创建文章生成链
article_chain = LLMChain(
    llm=chat_model,
    prompt=article_template,
    verbose=True
)

# 创建顺序链，将标题链和文章链串联起来
overall_chain = SimpleSequentialChain(
    chains=[title_chain, article_chain],
    verbose=True
)

# 运行链并展示结果
if topic:
    response = overall_chain.run(topic)
    st.write(response)

# streamlit run Langchain_tutorial_13.py --server.address-127.0.0.1 --server.port=6006